Link aggregation is the subject of an IEEE publication 802.3ad which generally describes the bundling of physical or logical ports to form a single logical channel or aggregated link between at least two packet network devices. The aggregation of links is controlled by a Link Aggregation Control Protocol (LACP) which is also described in the IEEE publication 802.3ad. An aggregation of links or link aggregation group (LAG) can be defined to be between two or more devices in communication with each other over two or more network links, and each of the two or more devices must implement the LACP. Generally, a link aggregation group is established between two packet network devices when one device sends LACP packets to another device. These packets include information needed by each network device to set up or terminate an LAG. A LAG can be established between two network devices that have two or more physical or logical network links in common that can be grouped together into a single logical link. Grouping the links into an LAG has the advantage of increasing the bandwidth between the two network devices and also provides for redundancy in the event of a link/port failure in one of the devices. FIG. 1 shows two network devices, device A and B, with a LAG configured between them. In this case, the LAG includes three physical or three logical links L.1, L.2, and L.3, and the three links are aggregated into one logical link labeled LAG 10.
As shown with reference to FIG. 2, it is also possible to configure an LAG between one network device and two other network devices. FIG. 2 shows three network devices, device A, device B and device C. Network device A can be, for instance either a network router or switch and network devices B and C can both be switches or routers or can be servers. Each of the devices B and C are in communication with device A over, in this case, single logical network links L.1 and L.2 respectively. Each of the logical links can represent one or more physical links between device A and devices B and C. In this case, links L.1 and L.2 are aggregated together into a group of links labeled as LAG 20. Due to the manner in which the LAG is established, the two network devices B and C appear to device A as a single logical device.
Typically, network traffic that is forwarding to an aggregation of links is load balanced. That is, the amount of traffic forwarded to each of the physical (or logical) links in an aggregation of links is approximately the same. Load balancing is typically employed to make the most efficient use of the total available LAG bandwidth. Load balancing in relationship to link aggregation is described here with reference to FIG. 3. FIG. 3 is a network diagram showing three servers A, B and C, with each of the servers in communication with a switch 31 over two logical links. Server A is in communication with the switch over links L.1A and L.1B, server B is in communication with the switch over links L.2A and L.2B and server C is in communication with the switch over links L.3A and L.3B. From the perspective of the switch 31, the links L.1B, L2.B and L.3B are aggregated to form LAG 30. The remaining links, L.1A, L.2A and L.3A are logical links not associated with the LAG 30 and can be utilized to support other (non-LAG) network traffic or to support device management functionality. Each of the servers A, B and C can be configured to provide the same service, which for example can be a domain name service (DNS). Load balancing across each of the links included in the LAG 30 can be achieved as described below.
Continuing to refer to FIG. 3, each of the servers (A, B and C), are configured to be dual homed hosts, i.e. each switch has two logical networking interfaces or ports. Each of the interfaces/ports included in the LAG 30 are configured to have the same IP address, which is referred to here as a virtual IP address. In this case these are the ports (P.1B, P.2B and P.3B) associated with links L.1B, L.2B and L.3B included in the LAG 30. The virtual IP address is the external IP address by which this service will be requested by a client (not shown). Each of these ports can be logical ports incorporating two or more physical ports or they can be physical ports. A virtual MAC address is also assigned to each logical or physical port P.1B, P.2B and P.3B, and this MAC address is associated with the virtual IP address (This can be configured or can be discovered using some load balancing algorithm among the servers). The servers (A, B and C) will use the ports associated with the LAG 30 and the virtual IP and MAC address to provide the DNS service to the client devices. The switch 31 operates to balance the distribution of ingress traffic to the three servers, server A, B and C, associated with the virtual MAC address. The other interface/port on each server can be configured with a unique IP address (each of the three non-LAG ports/interfaces have a different IP address), and each port will use the regular MAC address of that interface. This interface will be used to manage and maintain the load balancing service on the three servers and also to communicate with such applications outside.
The group of three aggregated links, labeled LAG 30 in FIG. 3, is perceived by the switch 31 as one logical link, and the switch 31, using load balancing functionality, is able to distribute the flow of traffic through this logical link relatively evenly with respect to the three physical links comprising the LAG. Each of the servers A, B and C use common virtual IP and virtual MAC addresses assigned to their respective ports to communicate with other devices in the network. The load balancing scheme described above with reference to FIG. 3 would be possible with standards based LAG support that is typically included on a switch. Usually the switch distributes incoming IP traffic to the LAG based on some hash mechanism, and the ARP packets are sent to all the ports of the LAG, to ensure that all the servers receive the ARP request and reply packets. However, the standards based approach to LAG does not permit a server port associated with a network device, such the server A in FIG. 3, to be shared/assigned to two or more LAGs. In order to assign one port to two or more LAGs, the port that is assigned to the two or more LAGs needs to be assigned two or more different IP addresses. The result of such a configuration, in the standards based LAG approach, is that a packet coming into a switch with ports configured in this manner cannot be routed to a server port in a determinate manner. In other words, the switch is unable to determine which LAG it should select in order to transmit the packet to the correct server port.